The ECC2 module 34 calculates and solves the simultaneous equations for each C2 code word, detecting and/or correcting errors/erasures where it can. As explained above, if the location of errors is known, the error correction module can correct twice as many errors as if the location is not known. However, if a C1 code word input to the ECC1 module 32 is marked with three or four erasures, it uses all or virtually all of its error detecting/correcting capacity in correcting those erasures, whereas if the code word is marked with two or less erasures, the error correction module can use the remaining error detecting/correcting capacity to detect and correct or mark as erasures other errors in the code word. Thus, in the case of a C1 code word having four erasures, the ECC1 module corrects the four erasures and inputs the data to the ECC2 module (with all of the erasure flags set to ‘0’), together with data indicating that the code word is “good”, and when the symbols of that C1 code word are checked by the ECC2 module relative to the associated C2 code words, they are presumed to be correct, whereas they have not been checked at all.